package Logica.Enemigos;

import General.Constantes;
import Graficas.InterfaceGrafica;
import Graficas.Sprite;
import Graficas.SpriteMovements;
import Logica.Personaje;

/**
 * Un enemigo es un personaje especial el cual tiene un movimiento particular, necesita una
 * inteligencia la cual se encarga de que el enemigo se mueva adecuadamente.
 * 
 * @author Mariano Rodecker
 * @author Matias Varela
 * 
 */

public abstract class Enemigo extends Personaje {
	protected boolean isDead;

	/* CONSTRUCTOR */
	public Enemigo(int sizeX, int sizeY, SpriteMovements sm, InterfaceGrafica ig) {
		super.iniPersonaje(sizeX, sizeY, sm, ig);
	}

	/* COMANDOS */
	public void moverse() {
		if (!isDead())
			intel.mover(this);
	}

	@Override
	public void ganar() {
		// TODO Auto-generated method stub

	}

	@Override
	public void morir() {
		isDead = true;
	}

	/* CONSULTAS */
	@Override
	public boolean isWin() {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean isDead() {
		return isDead;
	}

	@Override
	public Sprite getSprite() {
		if (getDirActual() == Constantes.dir_left) {
			return getSpriteMovements().getSprite(1);
		} else
			return getSpriteMovements().getSprite(0);
	}

	public Enemigo clone() {
		return null;

	}
	/**
	 * Retorna los puntos que se obtienen cuando el enemigo mata a alguien
	 * 
	 * @return
	 */
	public abstract int getPuntosPorMuerte();
	/**
	 * Retorna los puntos que se obtienen alguien mata al enemigo
	 * 
	 * @return
	 */
	public abstract int getPuntosPorDestruccion();
	
	/**
	 * Retorna si el enemigo esta en un modo tal que cualquier colision con mario, mata a mario bros, excepto cuando mario tiene estrella.
	 * @return
	 */
	public abstract boolean mataAMario();
}
